#!/usr/bin/env python3
"""
GraphRAG系统演示脚本
"""

import asyncio
import requests
import json
from pathlib import Path

def print_header(title):
    """打印标题"""
    print("\n" + "="*60)
    print(f" {title}")
    print("="*60)

def print_section(title):
    """打印章节标题"""
    print(f"\n📋 {title}")
    print("-" * 40)

def demo_web_interface():
    """演示Web界面功能"""
    print_section("Web界面演示")
    print("🌐 访问地址: http://localhost:8000")
    print("📝 功能特性:")
    print("   • 现代化的响应式界面")
    print("   • 支持四种查询模式")
    print("   • 实时查询和结果显示")
    print("   • Markdown格式支持")
    print("   • 错误处理和加载状态")

def demo_api_interface():
    """演示API接口功能"""
    print_section("API接口演示")
    
    # 测试服务器是否运行
    try:
        response = requests.get("http://localhost:8000/", timeout=60)
        if response.status_code == 200:
            print("✅ 服务器运行正常")
        else:
            print(f"❌ 服务器响应异常: {response.status_code}")
            return
    except Exception as e:
        print(f"❌ 无法连接到服务器: {e}")
        print("请先启动服务器: python run_server.py")
        return
    
    # 演示查询
    test_queries = [
        {
            "name": "局部查询 - 公司信息",
            "query": "请介绍一下苹果公司",
            "method": "local",
            "response_type": "text"
        },
        {
            "name": "全局查询 - 技术概览",
            "query": "GraphRAG系统有哪些核心功能？",
            "method": "global",
            "response_type": "text"
        },
        {
            "name": "漂移查询 - 探索性查询",
            "query": "人工智能在科技公司中的应用",
            "method": "drift",
            "response_type": "text"
        },
        {
            "name": "基础查询 - 快速信息",
            "query": "什么是机器学习？",
            "method": "basic",
            "response_type": "text"
        }
    ]
    
    for i, test in enumerate(test_queries, 1):
        print(f"\n🔍 测试 {i}: {test['name']}")
        print(f"   查询: {test['query']}")
        print(f"   方法: {test['method']}")
        
        try:
            response = requests.post(
                "http://localhost:8000/query",
                json={
                    "query": test['query'],
                    "method": test['method'],
                    "response_type": test['response_type'],
                    "community_level": 1,
                    "dynamic_community_selection": False
                },
                timeout=30
            )
            
            if response.status_code == 200:
                result = response.json()
                response_text = result.get('response', '无响应')
                print(f"   ✅ 成功! 响应长度: {len(response_text)} 字符")
                print(f"   预览: {response_text[:100]}...")
            else:
                print(f"   ❌ 失败: {response.status_code}")
                
        except Exception as e:
            print(f"   ❌ 错误: {e}")

def demo_features():
    """演示系统特性"""
    print_section("系统特性")
    
    features = [
        ("🎯 多种查询模式", "支持局部、全局、漂移、基础四种查询模式"),
        ("🌐 Web界面", "现代化的响应式Web界面，支持实时查询"),
        ("📊 灵活配置", "支持不同的社区级别、响应类型和动态社区选择"),
        ("🔍 智能搜索", "基于GraphRAG技术的智能搜索和回答"),
        ("🚀 RESTful API", "提供完整的API接口，支持程序化调用"),
        ("📈 性能优化", "数据缓存、异步处理、向量搜索优化"),
        ("🛡️ 错误处理", "完善的错误处理和用户友好的提示"),
        ("📚 完整文档", "详细的API文档和使用说明")
    ]
    
    for feature, description in features:
        print(f"   {feature}: {description}")

def demo_usage():
    """演示使用方法"""
    print_section("使用方法")
    
    print("1️⃣ 启动服务器:")
    print("   cd src")
    print("   python run_server.py")
    
    print("\n2️⃣ 访问Web界面:")
    print("   打开浏览器访问: http://localhost:8000")
    
    print("\n3️⃣ 使用API接口:")
    print("   curl -X POST http://localhost:8000/query \\")
    print("        -H 'Content-Type: application/json' \\")
    print("        -d '{\"query\": \"你的问题\", \"method\": \"local\"}'")
    
    print("\n4️⃣ 运行测试:")
    print("   python test_api.py")

def main():
    """主函数"""
    print_header("GraphRAG Web查询系统演示")
    
    print("🎉 欢迎使用GraphRAG Web查询系统!")
    print("这是一个基于知识图谱的检索增强生成系统，提供智能的问答服务。")
    
    demo_features()
    demo_usage()
    demo_web_interface()
    demo_api_interface()
    
    print_header("演示完成")
    print("🎯 系统已准备就绪，您可以开始使用GraphRAG进行智能查询了!")
    print("\n💡 提示:")
    print("   • 访问 http://localhost:8000 使用Web界面")
    print("   • 查看 http://localhost:8000/docs 获取API文档")
    print("   • 运行 python test_api.py 进行API测试")

if __name__ == "__main__":
    main() 